package com.elitel.frame.base.service;

import com.elitel.frame.main.dao.ext.DbSearchMap;
import com.elitel.frame.main.entity.SysPrjservice;
import com.elitel.frame.main.entity.ext.PrjServiceExt;
import com.elitel.frame.main.entity.vo.PageRequestVo;
import com.elitel.frame.main.entity.vo.PageResponseVo;

import java.util.List;
import java.util.Map;

public interface SysPrjServiceService {

	/**
	 * <pre>getProjectList(分页查询工程服务)
	 * @author：FanWenquan
	 * @date：2017年11月21日 下午4:48:16
	 * @param pr
	 * @return</pre>
	 */
	PageResponseVo<SysPrjservice> getSysProjectServiceList(PageRequestVo<SysPrjservice> pr);



	/**
	 * <pre>insertProjectConfig(这里用一句话描述这个方法的作用)
	 * @author：FanWenquan
	 * @date：2017年11月21日 下午4:48:20
	 * @param sysPrjservice</pre>
	 */
	void insertProjectConfig(SysPrjservice sysPrjservice);

	/**
	 * <pre>getProjectConfigByGuid(这里用一句话描述这个方法的作用)
	 * @author：FanWenquan
	 * @date：2017年11月21日 下午4:48:26
	 * @param guid
	 * @return</pre>
	 */
	SysPrjservice getProjectConfigByGuid(String guid);

	/**
	 * <pre>updateProjectConfig(这里用一句话描述这个方法的作用)
	 * @author：FanWenquan
	 * @date：2017年11月21日 下午4:48:29
	 * @param sysPrjservice</pre>
	 */
	void updateProjectConfig(SysPrjservice sysPrjservice);

	/**
	 * <pre>deleteProjectConfig(这里用一句话描述这个方法的作用)
	 * @author：FanWenquan
	 * @date：2017年11月21日 下午4:48:33
	 * @param guids</pre>
	 */
	void deleteProjectConfig(String guids);

	/**
	 * <pre>getProjectByPcode(这里用一句话描述这个方法的作用)
	 * @author：FanWenquan
	 * @date：2017年11月21日 下午4:48:38
	 * @param pcode
	 * @return</pre>
	 */
	List<SysPrjservice> getProjectServiceByPcode(String pcode);

	/**
	 * <pre>getServerByProjctId(根据工程查找服务)
	 * @author：FanWenquan
	 * @date：2017年11月27日 下午4:00:22
	 * @param pcode
	 * @return</pre>
	 */
	List<PrjServiceExt> getServerByProjctId(String pcode);

	/**
	 * <pre>getServiceBytype(根据服务类型和项目名查找服务)
	 * @author：FanWenquan
	 * @date：2018年1月6日 下午5:10:52
	 * @param pcode
	 * @param servertype
	 * @return</pre>
	 */
	List<PrjServiceExt> getServiceBytype(String pcode, String servertype);

	/**
	 * 通过服务编码查询服务信息
	 * @param  serviceCode 服务编码
	 */
	SysPrjservice getSysPrjserviceByServiceCode(String serviceCode);
	SysPrjservice getByServiceCode(String serviceCode);
	List<SysPrjservice> getByServiceCodes(List<String> serviceCodes);

	SysPrjservice getByServiceGuid(String guid);

	List<Map<String, Object>> selectCountGroupByType();

	/**
	 * 根据主键删除数据
	 * @param guid
	 * @return
	 */
 int deleteByGuid(String guid);
	/**
	 * 新增或者更新服务信息
	 *
	 * @param sysPrjservice
	 */
	void savePrjInfo(SysPrjservice sysPrjservice);

	/**
	 * 根据主键删除数据
	 * @param guidList
	 * @return
	 */
    int delByGuids(List<String> guidList);

    int getCount();


	boolean serviceCodeExist(String guid, String serviceCode);

	/**
	 * 根据apiPath查询服务信息
	 * @param apiPath
	 * @return
	 */
	boolean selectServiceApiCode(String apiPath);

	PrjServiceExt getPrjServiceExt(String serviceCode);


	Map<String, Integer> getCounts(String groupId, String servType, String dataType, String servName, String dbK, String app, String tbName, Integer status);



	PageResponseVo<DbSearchMap> pagePrjServiceData(Integer pageNo, Integer pageSize, String groupId, String servType, String dataType, String servName, String app, String pcode, String order, String tbName, Integer status);

    Object getCounts333();
}
